2.4.2 Erweiterte Form des INNER JOIN
INNER JOIN
über drei und mehr Tabellen
Einen kleinen Überblick über die Beziehungen und Verbundmöglichkeiten zwischen Tabellen können Sie mit dem Hilfe-Link aufrufen: Hilfe öffnen!
Bevor aber das Gefühl aufkommt, alles verstanden zu
haben, bleibt uns noch das Verbinden mehrerer Tabellen. Doch auch das ist keine
unlösbare Aufgabe. SQL verwendet dafür eine bestimmte Schreibweise. Wer
diese lernt und beherrscht, sollte keine Probleme haben.
Die einzelnen Verknüpfungen mit den verschiedenen Tabellen werden geschachtelt
und durch Klammern getrennt. Dabei beginnt eine Klammer vor jeder neuen Tabelle. Das
Schlüsselwort JOIN
folgt auf den Tabellennamen.
Für unser Beispiel der Verbindung von Abteilung mit Mitarbeitern und Titel ergibt das folgende Form:
[18]SELECT tbl_titel.titel, name, abteilungsname, abteilung_aufgabengebiet
FROM tbl_abteilung
INNER JOIN
(
tbl_mitarbeiter INNER JOIN tbl_titel
ON tbl_mitarbeiter.titel_ID = tbl_titel.titel_ID
)
ON tbl_abteilung.abteilung_ID = tbl_mitarbeiter.abteilung_id
Das Ergebnis sollte das gleiche sein wie mit der entsprechenden
WHERE
-Anweisung. Auch diese Abfrage können Sie umstellen. Vermeiden Sie aber
Schreibfehler, da SQL sonst mit Fehlermeldungen reagiert.
Zum Schluss wollen wir unsere Ergebnisse einschränken und zwar mit
den gleichen Bedingungen wie schon zuvor. Die Regel ist, dass die WHERE
-Anweisung
an das Ende der Abfrage gesetzt wird. Das sollte uns nun keine Schwierigkeiten
mehr machen. Daher wird uns hier ein Beispiel reichen. Die anderen
können Sie selbst nachvollziehen.
Wir wollen alle Mitarbeiter aus der Abteilung Einkauf
anzuzeigen lassen:
[2]SELECT tbl_titel.titel, name, abteilungsname, abteilung_aufgabengebiet
FROM tbl_abteilung
INNER JOIN
(
tbl_mitarbeiter INNER JOIN tbl_titel
ON tbl_mitarbeiter.titel_ID = tbl_titel.titel_ID
)
ON tbl_abteilung.abteilung_ID = tbl_mitarbeiter.abteilung_id
WHERE tbl_abteilung.abteilungsname = "Einkauf"
Spätestens an dieser Stelle sei darauf hingewiesen, dass die bislang verwendete Regel nach der in einem Verbund stets zuerst die Mastertabelle anzugeben ist, nur didaktischer Natur war. Der innere Verbund ist kommutativ, die Reihenfolge der Tabellen also beliebig!